Contents
前言
同樣是 李宏毅 教授的課程 Machine Learning (2016,Fall)。
稍作簡易筆記。
Learning Map (L1)
在其餘 scenario 內也是可以做 Supervised Learning 裡的 task、method。
Transfer learning : 大致上就是利用已訓練好的模型來幫助新的訓練,這樣新的就不用從零開始訓練了。
focuses on storing knowledge gained while solving one problem and applying it to a different but related problem. For example, knowledge gained while learning to recognize cars could apply when trying to recognize trucks. - wikipedia
Reinforcement learning : 不像一般的訓練有輸入輸出,以下圖例子來看,就是直接下去與人對話,在依人的反應來判斷機器回應得好不好。
Regression: Case Study (L2)
這邊影片有再解釋一下 Gradient Descent ,蠻清楚的。
越複雜的 model 可能在 training data 有更好的表現,但在 testing data 上卻不一定會更好,也就是 Overfitting 的問題。
這邊提到一個解決 overfitting 的方法,除了增加資料以外,還可以使用 Regularization。
Regularization
圖中的 L 就是 loss function (功用如同之前的 cost function,越小越好)。我們在其後加上了一項,我們也希望它能越小越好。
這用意在於我們想要比較 smooth 的 function,也就是對於輸入的變化比較不敏感。$w_i$ 越接近 0 ,輸出對輸入就越不敏感。
我們就比較不會受一些雜訊所干擾而大幅的影響訓練出來的結果,太平滑的 function 也會失去其效果。
(此項不用考慮 bias 是因為其不影響 function 的平滑度)
接著是例子中使用此方法後的結果:
loss function 中有考慮原本的 error 和 smooth ,當 $\lambda$ 越大時,代表找出來的 function 越平滑。
明顯可以看到隨著 $\lambda$ 變大 ,training data 的 error 也越來越大,因為我們考慮 error 的部分變小了。但在 testing data 的部分則不然。
Gradient Descent (L3)
可以看一下之前的筆記( Deep and Structured - L2) Gradient Descent 的部分,這邊不再重寫。
這邊介紹了幾個小 tip 來增進 Gradient Descent 的效果。
Adaptive Learning Rates
根據不同的參數給予不同的 learning rate ,一開始離目標很遠, learning rate 較大;開始接近目標後,就減小 learning rate 。
Adagrad
根據先前的結果來更改 learning rate。
$\sigma^t$ 是先前所有微分的 root mean square 。 $\eta^t$ 則會隨著 update 的次數變小。
化簡 $\sqrt{t+1}$
這裡可以發現一件事越大的 $g^t$ 代表越陡峭會有越大的步伐,可是在分母卻會導致步伐變小。
這邊直觀的解釋是造成 反差 的效果,雖然這次的值一樣,但之前出來的值($g^t$)的大小卻會影響這次的效果。
ex.10.1 10.2 10.3 0.1
ex.0.0001 0.0001 0.0001 0.1
(還有更正式的解釋在影片)
Stochastic Gradient Descent
( Deep and Structured - L2 )
Feature Scaling
我們希望不同的 feature 分布範圍差不多。
原因在於,如果某項( $x_i$ )特別大的話,會導致其 $w_i$ 對 輸出 的影響變大,反之則是變小。
在還沒 scaling 時可以看到圖中 loss function ,在 $w_1$ 的方向比較平滑,在 $w_2$ 的方向比較陡峭。
scaling 後圖形呈現一個正圓,這樣在 update 時會比較容易朝著目標前進(圓心)。
其中一種 scaling 的方法就是 標準化(standardizing) ,每個 data 的第 i 項減掉 全部 data 第 i 項的平均再除以它們的標準差。
Gradient Descent 原理
之前 Taylor Series 的部分( Deep and Structured - L2 )。
這邊多說明一下這張圖:
為了使 $L(\theta)$ 的值最小,我們可以將 $(u,v)$ 和 $(\Delta{\theta_1},\Delta{\theta_2})$ 看成兩個向量。不用管 $s$,因為 $\theta$ 並不影響它。
然後兩向量做內積的值就會等於 $L(\theta)$ 。
要讓此內積的值最小,就是讓它們夾 180 度 ( $cos(\pi)=-1$ )。
$(\Delta{\theta_1},\Delta{\theta_2})$ 的方向就是 $(u,v)$ 的反方向,然後調整長度到 d 的邊界,也就是乘上某個 constant( $-1 \times \eta$ )。
最後要找到那一個使 $L(\theta)$ 最小的點,就是利用圓點 $(a,b)$ 加上剛剛算出來的向量。
而這結果要精確取決於紅色圈圈的大小($d$),直接的影響了 learning rate ,它們的值要 足夠小。